package Formularios;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.InputVerifier;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import org.eclipse.wb.swing.FocusTraversalOnArray;
import java.awt.Component;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.Color;
import java.awt.Font;

public class frmVentas extends JFrame {

	private JPanel contentPane;
	private JTextField txtCliente;
	private JTextField txtNombre;
	private JTable table;
	private JTextField txtCodigo;
	private JTextField txtCantidad;
	private JLabel lblTotal;
	private JTextField txtSubTotal;
	private JLabel lblIva;
	private JTextField txtIva;
	private JLabel lblDescuento;
	private JTextField txtDescuento;
	private JLabel lblTotal_2;
	private JTextField txtTotal;
	
	
	//Columnas
	static final int COL_CODIGO = 0;
	static final int COL_DESCRIPCION = 1;
	static final int COL_PRECIO_UNITARIO = 2;
	static final int COL_CANTIDAD = 3;
	static final int COL_PRECIO = 4;
	
	static Statement comando;
	static Connection con;
	StatusBar sbMensaje;
	private int iRenglon = 0;
	private JTextField txtFactura;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					frmVentas frame = new frmVentas();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public frmVentas() {
		setTitle("Ventas Rohen Clean");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 651, 572);
		
		// Centrar
		setLocationRelativeTo(null);
		
		general gen = new general();
		try {
			comando = gen.abrirConexion(cNemonicos.IP_GLOBAL,1);
		} catch (ClassNotFoundException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		} catch (SQLException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
		
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblCliente = new JLabel("Cliente: ");
		lblCliente.setBounds(12, 60, 70, 15);
		contentPane.add(lblCliente);
		
		txtCliente = new JTextField();
		txtCliente.addFocusListener(new FocusAdapter() {
			@Override
			public void focusGained(FocusEvent arg0) {
				sbMensaje.setText("[ ENTER ] Continuar");
			}
		});
		txtCliente.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent arg0) {
				if ( arg0.getKeyCode() == cNemonicos.VK_SALTO_DE_LINEA)
				{
					long lCliente = Long.parseLong(txtCliente.getText());
					if ( buscarCliente(lCliente) == true )
					{
						String sFactura = String.format("%04d",general.consultarFolio(comando, cNemonicos.FOLIO_VENTAS,cNemonicos.SIGUIENTE_SECUENCIA));
						txtFactura.setText(sFactura); 
						txtCodigo.requestFocus();
					}
				}
				if ( arg0.getKeyCode() == cNemonicos.VK_F1 )
				{
					final frmBuscarClientes form = new frmBuscarClientes();
					form.show();
				}
				if ( arg0.getKeyCode() == cNemonicos.VK_F2)
				{
					//if ( general.consularPermiso(comando, iEmpleado, cNemonicos.ALTA_CLIENTES) )
					//{
						frmClientes form = new frmClientes();
						form.setVisible(true);
					//}
					//else
					//{
						//JOptionPane.showOptionDialog (null,"No tienes permisos para accesar a este modulo","Sin Permisos",JOptionPane.YES_OPTION,JOptionPane.ERROR_MESSAGE,null,new Object[] {"ACEPTAR"},"ACEPTAR");
					//}
				}
			}
			@Override
			public void keyTyped(KeyEvent e) {
				char c = e.getKeyChar();
				if ((!(Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)))) {
					getToolkit().beep();
					e.consume();
				}
				if (txtCliente.getText().length() == 4) {
					e.consume();
				}
			}
		});
		txtCliente.setInputVerifier(new InputVerifier() {
			
			@Override
			public boolean verify(JComponent arg0) {
				if ( txtCliente.getText().length() > 0)
				{
					return true;
				}
				else
				{
					JOptionPane.showOptionDialog (null,"Favor de Capturar un Cliente","Datos Incorrectos",JOptionPane.YES_OPTION,JOptionPane.ERROR_MESSAGE,null,new Object[] {"ACEPTAR"},"ACEPTAR");
					txtCliente.requestFocus();
					return false;
				}
				
			}
		});
		txtCliente.setBounds(100, 56, 114, 19);
		contentPane.add(txtCliente);
		txtCliente.setColumns(10);
		
		JLabel lblNombre = new JLabel("Nombre :");
		lblNombre.setBounds(232, 60, 70, 15);
		contentPane.add(lblNombre);
		
		txtNombre = new JTextField();
		txtNombre.setBounds(320, 58, 316, 19);
		contentPane.add(txtNombre);
		txtNombre.setColumns(10);
		
		sbMensaje = new StatusBar();
		sbMensaje.setHorizontalAlignment(SwingConstants.CENTER);
		sbMensaje.setBounds(0, 523, 636, 16);
		contentPane.add(sbMensaje);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(12, 168, 624, 227);
		contentPane.add(scrollPane);
		
		table = new JTable();
		table.setModel(new DefaultTableModel(
			new Object[][] {
				{null, null, null, null, null},
				{null, null, null, null, null},
				{null, null, null, null, null},
				{null, null, null, null, null},
				{null, null, null, null, null},
				{null, null, null, null, null},
				{null, null, null, null, null},
				{null, null, null, null, null},
				{null, null, null, null, null},
				{null, null, null, null, null},
				{null, null, null, null, null},
				{null, null, null, null, null},
			},
			new String[] {
				"Codigo", "Descripcion", "Precio Unitario", "Cantidad", "Total"
			}
		) {
			Class[] columnTypes = new Class[] {
				Integer.class, String.class, Double.class, Integer.class, Double.class
			};
			public Class getColumnClass(int columnIndex) {
				return columnTypes[columnIndex];
			}
			boolean[] columnEditables = new boolean[] {
				false, false, false, false, false
			};
			public boolean isCellEditable(int row, int column) {
				return columnEditables[column];
			}
		});
		table.getColumnModel().getColumn(0).setResizable(false);
		table.getColumnModel().getColumn(1).setResizable(false);
		table.getColumnModel().getColumn(1).setPreferredWidth(200);
		table.getColumnModel().getColumn(2).setResizable(false);
		table.getColumnModel().getColumn(2).setPreferredWidth(106);
		table.getColumnModel().getColumn(3).setResizable(false);
		table.getColumnModel().getColumn(4).setResizable(false);
		scrollPane.setViewportView(table);
		
		txtCodigo = new JTextField();
		txtCodigo.addFocusListener(new FocusAdapter() {
			@Override
			public void focusGained(FocusEvent e) {
				if ( iRenglon > 0 )
				{
					sbMensaje.setText("[ F5 ] Recibir Pago");
				}
				
			}
		});
		txtCodigo.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent arg0) {
				switch (arg0.getKeyCode()) {
				case cNemonicos.VK_SALTO_DE_LINEA:
					if (existeCodigo(Integer.parseInt(txtCodigo.getText())) == true) {
						txtCantidad.requestFocus();
					}
					break;
				case cNemonicos.VK_F5:
					txtTotal.requestFocus();
					break;
					
				default:
					break;
				}
			}
			@Override
			public void keyTyped(KeyEvent e) {
				char c = e.getKeyChar();
				if ((!(Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)))) {
					getToolkit().beep();
					e.consume();
				}
				if (txtCodigo.getText().length() == 4) {
					e.consume();
				}
			}
		});
		txtCodigo.setBounds(12, 137, 70, 19);
		contentPane.add(txtCodigo);
		txtCodigo.setColumns(10);
		
		txtCantidad = new JTextField();
		txtCantidad.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				if ( e.getKeyCode() == cNemonicos.VK_SALTO_DE_LINEA)
				{
					if ( Integer.parseInt(txtCantidad.getText())> 0)
					{
						agregarProducto(Integer.parseInt(txtCodigo.getText()));
						calcularCostoVenta();
						txtCodigo.requestFocus();
						limpiarCodigo();
					}
				}
			}
			@Override
			public void keyTyped(KeyEvent e) {
				char c = e.getKeyChar();
				if ((!(Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)))) {
					getToolkit().beep();
					e.consume();
				}
				if (txtCantidad.getText().length() == 3) {
					e.consume();
				}
			}
		});
		txtCantidad.setInputVerifier(new InputVerifier() {
			
			@Override
			public boolean verify(JComponent arg0) {
				if ( txtCantidad.getText().length() > 0)
				{
					return true;
				}
				else
				{
					JOptionPane.showOptionDialog (null,"Favor de Capturar la Cantidad","Datos Incorrectos",JOptionPane.YES_OPTION,JOptionPane.ERROR_MESSAGE,null,new Object[] {"ACEPTAR"},"ACEPTAR");
					txtCantidad.requestFocus();
					return false;
				}
				
			}
		});
		txtCantidad.setBounds(100, 137, 70, 19);
		contentPane.add(txtCantidad);
		txtCantidad.setColumns(10);
		
		JLabel lblCodigo = new JLabel("Codigo");
		lblCodigo.setHorizontalAlignment(SwingConstants.CENTER);
		lblCodigo.setBounds(12, 113, 70, 15);
		contentPane.add(lblCodigo);
		
		JLabel lblCanidad = new JLabel("Canidad");
		lblCanidad.setHorizontalAlignment(SwingConstants.CENTER);
		lblCanidad.setBounds(100, 113, 70, 15);
		contentPane.add(lblCanidad);
		
		lblTotal = new JLabel("SubTotal:");
		lblTotal.setHorizontalAlignment(SwingConstants.RIGHT);
		lblTotal.setBounds(446, 407, 70, 15);
		contentPane.add(lblTotal);
		
		txtSubTotal = new JTextField();
		txtSubTotal.setBounds(519, 405, 93, 19);
		contentPane.add(txtSubTotal);
		txtSubTotal.setColumns(10);
		
		lblIva = new JLabel("Iva :");
		lblIva.setHorizontalAlignment(SwingConstants.RIGHT);
		lblIva.setBounds(446, 434, 70, 15);
		contentPane.add(lblIva);
		
		txtIva = new JTextField();
		txtIva.setBounds(519, 434, 52, 19);
		contentPane.add(txtIva);
		txtIva.setColumns(10);
		
		lblDescuento = new JLabel("% Descuento:");
		lblDescuento.setVisible(false);
		lblDescuento.setHorizontalAlignment(SwingConstants.RIGHT);
		lblDescuento.setBounds(402, 461, 114, 15);
		contentPane.add(lblDescuento);
		
		txtDescuento = new JTextField();
		txtDescuento.setVisible(false);
		txtDescuento.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				if ( e.getKeyCode() == cNemonicos.VK_SALTO_DE_LINEA)
				{
					if ( Integer.parseInt(txtDescuento.getText()) <= 15 )
					{
						calcularCostoVenta();
						txtTotal.requestFocus();
					}
					else
					{
						txtDescuento.setText("0");
						JOptionPane.showOptionDialog (null,"No se permite un descuento tan alto maximo 15%","Datos Incorrectos",JOptionPane.YES_OPTION,JOptionPane.ERROR_MESSAGE,null,new Object[] {"ACEPTAR"},"ACEPTAR");
						txtDescuento.requestFocus();
						txtDescuento.setSelectionStart(0);
						txtDescuento.setSelectionEnd(txtDescuento.getText().length());
					}
				}
				if ( e.getKeyCode() == cNemonicos.VK_F8 )
				{
					mostrarDescuento(false);
					txtDescuento.setText("0");
					txtTotal.requestFocus();
				}
			}
			@Override
			public void keyTyped(KeyEvent e) {
				char c = e.getKeyChar();
				if ((!(Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)))) {
					getToolkit().beep();
					e.consume();
				}
				if (txtDescuento.getText().length() == 2) {
					e.consume();
				}
			}
		});
		txtDescuento.setInputVerifier(new InputVerifier() {
			
			@Override
			public boolean verify(JComponent arg0) {
				if ( txtDescuento.getText().length() > 0)
				{
					int iDescuento = Integer.parseInt(txtDescuento.getText());
					if ( iDescuento <= 15)
					{
						return true;
					}
					else
					{
						txtDescuento.setText("0");
						JOptionPane.showOptionDialog (null,"No se permite un descuento tan alto maximo 15%","Datos Incorrectos",JOptionPane.YES_OPTION,JOptionPane.ERROR_MESSAGE,null,new Object[] {"ACEPTAR"},"ACEPTAR");
						txtDescuento.requestFocus();
						return false;
					}
				}
				else
				{
					JOptionPane.showOptionDialog (null,"Favor de Capturar el Descuento","Datos Incorrectos",JOptionPane.YES_OPTION,JOptionPane.ERROR_MESSAGE,null,new Object[] {"ACEPTAR"},"ACEPTAR");
					txtDescuento.requestFocus();
					return false;
				}
				
			}
		});
		txtDescuento.setText("0");
		txtDescuento.setBounds(519, 459, 37, 19);
		contentPane.add(txtDescuento);
		txtDescuento.setColumns(10);
		
		lblTotal_2 = new JLabel("Total:");
		lblTotal_2.setHorizontalAlignment(SwingConstants.RIGHT);
		lblTotal_2.setBounds(446, 490, 70, 15);
		contentPane.add(lblTotal_2);
		
		txtTotal = new JTextField();
		txtTotal.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent arg0) {
				if ( arg0.getKeyCode() == cNemonicos.VK_SALTO_DE_LINEA)
				{
					if ( guardar() == true )
					{
						limpiar();
						String sFactura = String.format("%04d",general.consultarFolio(comando, cNemonicos.FOLIO_VENTAS,cNemonicos.SIGUIENTE_SECUENCIA));
						txtFactura.setText(sFactura);
					}
				}
				if ( arg0.getKeyCode() == cNemonicos.VK_F7 )
				{
					mostrarDescuento(true);
					txtDescuento.setText("0");
					txtDescuento.requestFocus();
					txtDescuento.setSelectionStart(0);
					txtDescuento.setSelectionEnd(txtDescuento.getText().length());
				}
				if ( arg0.getKeyCode() == cNemonicos.VK_F8 )
				{
					mostrarDescuento(false);
					txtDescuento.setText("0");
					txtTotal.requestFocus();
				}
			}
		});
		txtTotal.addFocusListener(new FocusAdapter() {
			@Override
			public void focusGained(FocusEvent arg0) {
				sbMensaje.setText("[ ENTER ] Guardar");
			}
		});
		txtTotal.setBounds(519, 488, 93, 19);
		contentPane.add(txtTotal);
		txtTotal.setColumns(10);
		
		JLabel lblFactura = new JLabel("Factura");
		lblFactura.setBounds(459, 12, 70, 15);
		contentPane.add(lblFactura);
		
		txtFactura = new JTextField();
		txtFactura.setFont(new Font("Dialog", Font.PLAIN, 20));
		txtFactura.setHorizontalAlignment(SwingConstants.CENTER);
		txtFactura.setForeground(Color.RED);
		txtFactura.setEditable(false);
		txtFactura.setBounds(534, 2, 85, 36);
		contentPane.add(txtFactura);
		txtFactura.setColumns(10);
		setFocusTraversalPolicy(new FocusTraversalOnArray(new Component[]{txtCliente, txtNombre, txtCodigo, txtCantidad, txtSubTotal, txtIva, txtDescuento, txtTotal}));
	}
	
	public boolean buscarCliente(long lCliente)
	{
		boolean bResultado = false;
		try {

			// Una variable String para almacenar la sentencia SQL
			String query = "select nombre || ' ' || apellidop || ' ' || ' ' || apellidom as Nombre from caclientes  where numcliente = "
					+ lCliente + ";";
			System.out.println(query);

			ResultSet resultado = comando.executeQuery(query);

			// Ejecutamos la consulta SQL
			if (resultado.next()) {
				txtNombre.setText(resultado.getString("Nombre"));
				bResultado = true;
			}
			else
			{
				
			}

		} catch (SQLException e) {
			
			// Por si ocurre un error
			System.out.println(e.getMessage());
			int op = JOptionPane.showOptionDialog(null, e.getMessage(),
					"Entrada Invalidad", JOptionPane.YES_OPTION,
					JOptionPane.ERROR_MESSAGE, null,
					new Object[] { "ACEPTAR" }, "ACEPTAR");
			if (op == 0) {

			}
		}
		return bResultado;
	}
	
	public boolean existeCodigo(int iCodigo)
	{
		boolean bResultado = false;
		try {

			// Una variable String para almacenar la sentencia SQL
			String query = "select nombre from productos  where codigo = "
					+ iCodigo + ";";
			System.out.println(query);

			ResultSet resultado = comando.executeQuery(query);

			// Ejecutamos la consulta SQL
			if (resultado.next()) {
				bResultado = true;
			}
			else
			{
				
			}

		} catch (SQLException e) {
			
			// Por si ocurre un error
			System.out.println(e.getMessage());
			int op = JOptionPane.showOptionDialog(null, e.getMessage(),
					"Entrada Invalidad", JOptionPane.YES_OPTION,
					JOptionPane.ERROR_MESSAGE, null,
					new Object[] { "ACEPTAR" }, "ACEPTAR");
			if (op == 0) {

			}
		}
		return bResultado;
	}
	
	public boolean agregarProducto(int iCodigo)
	{
		boolean bResultado = false;
		try {

			// Una variable String para almacenar la sentencia SQL
			String query = "select nombre,precioventa from productos  where codigo = "
					+ iCodigo + ";";
			System.out.println(query);

			ResultSet resultado = comando.executeQuery(query);

			// Ejecutamos la consulta SQL
			if (resultado.next()) {
				table.setValueAt(iCodigo, iRenglon, COL_CODIGO);
				table.setValueAt(resultado.getString("nombre"), iRenglon, COL_DESCRIPCION);
				int iCantidad = Integer.parseInt(txtCantidad.getText());
				table.setValueAt(resultado.getDouble("precioventa"), iRenglon, COL_PRECIO_UNITARIO);
				table.setValueAt(iCantidad, iRenglon, COL_CANTIDAD);
				double dPrecio = resultado.getDouble("precioventa") * iCantidad;
				table.setValueAt(dPrecio, iRenglon, COL_PRECIO);
				iRenglon++;
				bResultado = true;
			}
			else
			{
				
			}

		} catch (SQLException e) {
			
			// Por si ocurre un error
			System.out.println(e.getMessage());
			int op = JOptionPane.showOptionDialog(null, e.getMessage(),
					"Entrada Invalidad", JOptionPane.YES_OPTION,
					JOptionPane.ERROR_MESSAGE, null,
					new Object[] { "ACEPTAR" }, "ACEPTAR");
			if (op == 0) {

			}
		}
		return bResultado;
	}
	
	public double calcularCostoVenta()
	{
		double dTotal = 0;
		
		for (int Ren = 0; Ren < iRenglon; Ren++) {
			
			dTotal += (double) table.getValueAt(Ren, COL_PRECIO);
		}
		
		DecimalFormat df = new DecimalFormat("0.000");
		txtSubTotal.setText(df.format((dTotal)));
		double dIva = dTotal * (cNemonicos.VALOR_IVA /100.0);
		txtIva.setText(df.format( dIva ));
		int iDescuento = Integer.parseInt(txtDescuento.getText());
		double dDescuento = (dTotal + dIva) * (iDescuento /100.0);
		txtTotal.setText(df.format((dTotal + dIva - dDescuento)));
		
		return dTotal;
	}
	
	public int calcularTotalArticulos()
	{
		int iTotalArticulos = 0;
		
		for (int Ren = 0; Ren < iRenglon; Ren++) {
			
			iTotalArticulos += (int) table.getValueAt(Ren, COL_CANTIDAD);
		}
		
		return iTotalArticulos;
	}
	
	public void limpiarCodigo()
	{
		txtCodigo.setText("");
		txtCantidad.setText("");
	}
	public void limpiar()
	{
		txtCliente.setText("");
		txtNombre.setText("");
		limpiarCodigo();
		txtSubTotal.setText("");
		txtIva.setText("");
		txtDescuento.setText("");
		txtTotal.setText("");
		limpiarGrid();
		txtCliente.requestFocus();		
	}
	public void limpiarGrid()
	{		
		for (int iRen = 0; iRen < table.getRowCount(); iRen++) {
			table.setValueAt(null,iRen, COL_CODIGO);
			table.setValueAt(null,iRen, COL_DESCRIPCION);
			table.setValueAt(null,iRen, COL_CANTIDAD);
			table.setValueAt(null,iRen, COL_PRECIO);
			table.setValueAt(null,iRen, COL_PRECIO_UNITARIO);			
		}
		iRenglon = 0;
	}
	
	public boolean guardar()
	{
		boolean bResultado = true;
		
		int iCliente = Integer.parseInt(txtCliente.getText());
		int iFolio = general.consultarFolio(comando, cNemonicos.FOLIO_VENTAS,cNemonicos.INCREMENTAR_SECUENCIA);
		//int iFolio = Integer.parseInt(txtFactura.getText());
		int iTotalArticulos = calcularTotalArticulos();
		String sSubTotal = txtSubTotal.getText();
		sSubTotal = sSubTotal.replace(",", ".");
		float fSubtotal = Float.parseFloat(sSubTotal);
		String sIva = txtIva.getText();
		sIva = sIva.replace(',', '.');
		float fIva = Float.parseFloat(sIva);
		int iDescuento = Integer.parseInt(txtDescuento.getText());
		float fDescuento = (float) ((fSubtotal + fIva) * (iDescuento /100.0));
		String sTotal = txtTotal.getText();
		sTotal = sTotal.replace(",", ".");
		float fTotal = Float.parseFloat(sTotal);
		
		general.generarTransaccion(comando, "Begin");
		
		String query;
		query = String.format("select GuardarVenta(" + iCliente + "," + iFolio + "," + iTotalArticulos + "," + fSubtotal + "," + fIva + "," + fDescuento + "," + fTotal + ")" );
		System.out.println(query);
	
		cTotal insertar = new cTotal(comando);
		try {
			insertar.ejecutar(query);
			general.generarTransaccion(comando, "Commit");
					
		for (int Ren = 0; Ren < iRenglon; Ren++) {
			int iCodigo = (int) table.getValueAt(Ren, COL_CODIGO);
			int iCantidad = (int) table.getValueAt(Ren, COL_CANTIDAD);
			double dPrecioUnitario = (double) table.getValueAt(Ren, COL_PRECIO_UNITARIO);
			double dPrecioTotal = (double) table.getValueAt(Ren, COL_PRECIO);
			
			query = String.format("select GuardarVentaDetalle(" + iFolio + "," + iCodigo + "," + iCantidad + "," + dPrecioUnitario + "," + dPrecioTotal + ");");
			System.out.println(query);
			insertar.ejecutar(query);
			
		}
		general.generarTransaccion(comando, "Commit");
		
		} catch (SQLException e) {
			general.generarTransaccion(comando, "Rollback");
			general.grabarError("frmVentas", "guardar", -1, query, e.getMessage(),"Error al insertar Ventas");
			// TODO Auto-generated catch block
			bResultado = false;
			e.printStackTrace();
		}

		return bResultado;		
	}
	
	public void mostrarDescuento(boolean bOcultar)
	{
		txtDescuento.setVisible(bOcultar);
		lblDescuento.setVisible(bOcultar);
	}
}
